import axios from 'axios';
const axiosDefaultOptions = {
  // `method` 是创建请求时使用的方法
  method: 'post', // 默认是 get
  // `baseURL` 将自动加在 `url` 前面，除非 `url` 是一个绝对 URL。
  // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  baseURL: '/yourAPIContextPath',

  // `headers` 是即将被发送的自定义请求头
  headers: {'Content-Type': 'application/json;charset=utf-8'},
  // `params` 是即将与请求一起发送的 URL 参数

  // `timeout` 指定请求超时的毫秒数(0 表示无超时时间)
  // 如果请求话费了超过 `timeout` 的时间，请求将被中断
  timeout: 5000,
  data: {},

  // `responseType` 表示服务器响应的数据类型，可以是 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'
  responseType: 'json', // 默认的


  // `maxContentLength` 定义允许的响应内容的最大尺寸
  maxContentLength: 20000,

  // `validateStatus` 定义对于给定的HTTP 响应状态码是 resolve 或 reject  promise 。如果 `validateStatus` 返回 `true` (或者设置为 `null` 或 `undefined`)，promise 将被 resolve; 否则，promise 将被 rejecte
  validateStatus: function (status) {
    return status >= 200 && status < 300; // 默认的
  }
}

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // common.showLoading();
  return config;
}, function (error) {

  return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么

  //common.hideLoading();
  return response.data;
}, function (error) {
  //common.hideLoading();
  // 对响应错误做点什么
  return Promise.reject(error);
});
var Common = {
  request(datas) {
    return axios.request(Object.assign({}, axiosDefaultOptions, datas))
  }
}
export default Common;